//用来生成table的样式
//作者:陈雷
//20080425

function TableObject(tableobject,titlerowid)
{
		/* begin TableObject类的参数定义 */
		//这些参数都允许实列化对象TableObject 对这些值进行修改
		this.setId=function(id){}
		this.setModtime=function(modtime){}
		this.setName=function(name){}
		this.setInfo=function(info){}
		
		
		var rowBackgroundColor1="#00FF33";       //单行颜色
		this.setRowBackgroundColor1=function(color){rowBackgroundColor1=color;}
		var rowBackgroundColor2="#009999";       //双行颜色		
		this.setRowBackgroundColor2=function(color){rowBackgroundColor2=color;}
		
		var titleBackgroundColor="#00CCCC";  //标题颜色
		this.setTitleBackgroundColor=function(color){titleBackgroundColor=color;}
		var pageBackgroundColor="#00CCCC";  //上一页，下一页的tr的背影颜色
		this.setPageBackgroundColor=function(color){pageBackgroundColor=color;}
		
		var rowMouseOnBackgroundColor="#CC6600";     //移动到行上的颜色
		this.setRowMouseOnBackgroundColor=function(color){rowMouseOnBackgroundColor=color;}
		var colMouseOnBackgroundColor="#CC6600";     //移动到行上的颜色
		this.setColMouseOnBackgroundColor=function(color){colMouseOnBackgroundColor=color;}
		
		var rowClickBackgroudColor="#CC0000";  //单击选种了的行
		this.setRowClickBackgroudColor=function(color){rowClickBackgroudColor=color;}
		var colClickBackgroudColor="#CC0000";  //单击选种了的行		
		this.setColClickBackgroudColor=function(color){colClickBackgroudColor=color;}
														
		var enableChangRowColor=true;   //是否允许鼠标滑过，改变行的颜色
		this.setEnableChangRowColor=function(color){enableChangRowColor=color;}
		var enableChangColColor=true;   //是否允许鼠标滑过，改变列的颜色
		this.setEnableChangColColor=function(color){enableChangColColor=color;}
		
		
		var enableRowClick=true;      //是否允许点击行事件
		this.setEnableRowClick=function(enable){enableRowClick=enable;}		
		
		var rowClickUrl="";      //是否允许点击行事件
		this.setRowClickUrl=function(r){rowClickUrl=r;}	
		
		var showMethod="";      //是否允许点击行事件
		this.setShowMethod=function(r){showMethod=r;}	
		
		var enableTitleClick=true;      //是否允许点击列标题
		this.setEnableTitleClick=function(enable){enableTitleClick=enable;}
		var enableTitleSort=true;      //是否能过点击列标题，进行排序		
		this.setEnableTitleSort=function(enable){enableTitleSort=enable;}
		
		var sortDESCinnerHTML="↑";              //升序时，所表示的图标
		this.setSortDESCinnerHTML=function(str){sortDESCinnerHTML=str;}
		var sortASCinnerHTML ="↓";		         //降序时，所表示的图标
		this.setSortASCinnerHTML=function(str){sortASCinnerHTML=str;}
		
		var enableRowRightMenu=true;   //是否允许右键菜单		
		this.setEnableRowRightMenu=function(enable){enableRowRightMenu=enable;}
		var enableTitleRightMenu=true;   //是否允许右键菜单		
		this.setEnableTitleRightMenu=function(enable){enableTitleRightMenu=enable;}
		
		var autoCloseRightMenuTime=-1;            //右键菜单几秒种后自动关闭	-1为不自动关闭
		this.setAutoCloseRightMenuTime=function(t){autoCloseRightMenuTime=t;}
		
		var fixRowId="";                          //需要排除的行;		
		var rowRightMenuDIVID="rowRightMenuDIV";  //右键菜单所在的层		
		
		var rightMenu;
		this.setRightMenu=function(rightm){rightMenu=rightm;}
		/* end TableObject类的参数定义 */	
		
						
		/* begin TableObject类的内部需要的参数定义  这些值不允许在类外面进行更改*/
		var selectRowNode;            //选择的table 行值为tr 
		var selectColNode;            //选择的标题列 值为node;
		
		
		var rowList ;//   //行集合   new Array();
		var colList ;//   //列集合   new Array();   
		
		var titlerow;   	  //标题行
		var titleRowValues;   //标题行 每个td的值；
		var pageRow;          //上一页，下一页的tr
		var tableNode=document.getElementById(tableobject);		
			
		
		/* end TableObject类的内部需要的参数定义  这些值不允许在类外面进行更改*/
		
		if(tableNode==null)
		{
			//alert("表"+tableobject+" 没有找到 为 null");
			return ;
		}
		
		/* begin 初始化行集合*/
		titlerow=document.getElementById(titlerowid);				
		pageRow=document.getElementById("changPageRow");	
			//用来维护标题行的状态
		titleRowValues=new Array();   //标题行 每个td的值 
		if(titlerow!=null)
		{
			for(var i=0;i<titlerow.childNodes.length;i++)
			{				
				titleRowValues.push(titlerow.childNodes[i].innerHTML);
			}	
		}
		var init=new function Init()
		{							
			var temprows=tableNode.childNodes;		
			if(temprows[0].tagName=="TBODY")
			{
				tableNode=tableNode.childNodes[0];
				temprows=temprows[0].childNodes;				
			}		
			//循环行。
			rowList=new Array();   //行集合
			for(var i=0;i<temprows.length;i++)
			{			
				if(temprows[i].childNodes[0]!=null)
				{					
					
					if((!(titlerow.innerHTML==temprows[i].innerHTML))&&(temprows[i].childNodes[0].tagName=="TD"||temprows[i].childNodes[0].tagName=="td"))
					{		
						var trnode=temprows[i];
						trnode.rowNum=i;  //设置行号;
						rowList.push(trnode);
					}				
				}
			}
			delete temprows;
		}
		/* end 初始化行集合*/
					
		/* begin 设置table 里的tr的颜色 */
					
		this.initBackgroudColor=initBackgroudColor;
		function initBackgroudColor()
			{
				if(pageRow!=null)
				{
					pageRow.style.backgroundColor=pageBackgroundColor;
				}
				
				for(var i=0;i<titlerow.childNodes.length;i++)
				{
					titlerow.childNodes[i].style.backgroundColor=titleBackgroundColor;	
					titlerow.childNodes[i].style.privatebackgroundColor=titleBackgroundColor;
				}
				
				/*更改逐行的颜色*/		
				var a=0;				
				/*设置每行的颜色*/
				for(var i=0;i<rowList.length;i++)
				{							
					if(rowList[i].childNodes[0].tagName=="TD")
					{
						a++;
						var tempclass;
						if(a%2==1)
						{	tempclass=rowBackgroundColor1;	}		
						else
						{	tempclass=rowBackgroundColor2;	}					
						for(var b=0;b<rowList[i].childNodes.length;b++)
						{	
							rowList[i].childNodes[b].style.backgroundColor=tempclass;		
							rowList[i].childNodes[b].style.privatebackgroundColor=tempclass;
						}								
						delete tempclass;
					}					
				}	
			} 
			
		
		/* end 设置table 里的tr的颜色 */
		
		/*设置table事件*/ 
		function initEvent()
		{
			
			if(enableRowRightMenu==true||enableRowRightMenu=="true")  
			{
				tableNode.oncontextmenu=tableOnContextMenu;				
			}
			if(true)
			{
				for(var i=0;i<titlerow.childNodes.length;i++)
				{														
					if(enableChangColColor==true||enableChangColColor=="true")  					
					{
						titlerow.childNodes[i].onmouseover=colMouseover;
						titlerow.childNodes[i].onmouseout=colMouseout;				
					}
					if(enableTitleClick==true||enableTitleClick=="true") 		
					{
						titlerow.childNodes[i].onclick=colClick;					
						titlerow.childNodes[i].ondblclick=colDbClick;
					}					
					//if(enableRowRightMenu)	rowList[i].oncontextmenu=openRowRightMenu;									
				}
			}
			for(var i=0;i<rowList.length;i++)
			{					
				if(rowList[i].childNodes[0].tagName=="TD")
				{					
					if(enableChangRowColor==true||enableChangRowColor=="true") 					
					{
						rowList[i].onmouseover=rowMouseover;
						rowList[i].onmouseout=rowMouseout;
					}
					if(enableRowClick==true||enableRowClick=="true") 					
					{
						rowList[i].onclick=rowClick;	
						rowList[i].ondblclick=rowDbClick;
					}
					else
					{
						rowList[i].onclick=rowOtherClick;									
					}
					if(enableRowRightMenu)	rowList[i].oncontextmenu=openRowRightMenu;				
				}					
			}
		}
		this.initEvent=initEvent;
		/* end 设置table事件*/ 
		
		/* begin 初使化右键菜单 */
				
		/* end 初使化右键菜单*/
		{
		/*行事件  begin */		
			function rowMouseover()
			{						
				
				if(enableChangRowColor==true||enableChangRowColor=="true")
				{
					//如果这行是已选种的行，就不改变它的颜色
					if(this!=selectRowNode)
					{					
						//修改这行中所有的td的颜色
						for(var i=0;i<this.childNodes.length;i++)
						{
							var indexof=getColNum(titlerow,selectColNode);
							//如果这列是已选种的td，就不改变它的颜色
							if(indexof!=i)
							{							
									this.childNodes[i].style.backgroundColor=rowMouseOnBackgroundColor;	
							}
						}					
					}
				}
			}
			function rowMouseout()
			{			
				//如果这行是已选种的行，就不改变它的颜色
				if(enableChangRowColor==true||enableChangRowColor=="true") 		
				{
					if(this!=selectRowNode)
					{
						//修改这行中所有的td的颜色
						for(var i=0;i<this.childNodes.length;i++)
						{
							//如果这列是已选种的td，就不改变它的颜色
							var indexof=getColNum(titlerow,selectColNode);
							if(enableChangColColor=="false"||(enableChangColColor=="true"&&indexof!=i))
							{
								this.childNodes[i].style.backgroundColor=this.childNodes[i].style.privatebackgroundColor;	
							}
						}
					}
				}
			}
			function rowClick()
			{					
				if(enableRowClick==true||enableRowClick=="true") 		
				{
					selectColNode=null;
					selectRowNode=this;				
					initBackgroudColor();				
					for(var i=0;i<this.childNodes.length;i++)
					{
						this.childNodes[i].style.backgroundColor=rowClickBackgroudColor;	
					}
					if(rightMenu!=null) rightMenu.rightMenuHidde();
				}				
				else
				{
					
				}
			}
/*			function rowOtherClick()
			{	
				
				if(typeof(doEdit)=="function")
				{										
					doEdit(rowClickUrl+""+this.rowkey);							
				}
				else
				{
					alert("用自已定入函数 doEdit 不存在，请定义该函数!\r\n参数1:为预打开的页面的url ");
				}			
			}*/
			function test(param){
				var temprowkey = param.split('&');
				var tempparam="";
				if(temprowkey.length>0){
					for(var i=0;i<temprowkey.length;i++){
						alert(temprowkey[i]);
						temprowkeychild=temprowkey[i].split("=");
						if(tempparam==""){
							tempparam+=temprowkeychild[1];
						}else{
							tempparam+=","+temprowkeychild[1];
						}
					}
				}

			}
			
			function rowOtherClick()
			{
				var tempShowMethod=showMethod;
				rowClickUrlTemp = rowClickUrl+""+this.rowkey;
				
				if(tempShowMethod!=null&&tempShowMethod!=""&&tempShowMethod!="null"){
					tempShowMethod = tempShowMethod.replace("url","'"+rowClickUrlTemp+"'");
					tempShowMethod = tempShowMethod.replace("param","'"+this.rowkey+"'");
					eval(tempShowMethod);
				}

				else if(typeof(doEdit)=="function")
				{
					if(rowClickUrl!=null&&rowClickUrl!=""&&rowClickUrl!="null"){
					var  locationhref = rowClickUrl;
                 	if(locationhref!=null)
	                {
					  // alert(locationhref);
	                   if(locationhref=='/sysmanage/usergroupEdit.action?'){
						 //  alert(parent.parent.frames["titlesFrame"]);
						 var  html="";
				  if(parent.parent.titlesFrame.document.getElementById("subtitleDiv").innerHTML.indexOf("[")>-1){
				     html= parent.parent.titlesFrame.document.getElementById("subtitleDiv").innerHTML.substring(0,parent.parent.titlesFrame.document.getElementById("subtitleDiv").innerHTML.indexOf("["));  
					  parent.parent.titlesFrame.document.getElementById("subtitleDiv").innerHTML=html+"["+this.childNodes[1].innerText+"]";
				  }
	              else
					  parent.parent.titlesFrame.document.getElementById("subtitleDiv").innerHTML+="["+this.childNodes[1].innerText+"]";
	                   }
	                }
				//	alert('dfdd');
						doEdit(rowClickUrlTemp);
					}

				}
				else
				{
					alert("用自已定入函数 doEdit 不存在，请定义该函数!\r\n参数1:为预打开的页面的url ");
				}
		
			}			
			
			function rowDbClick()
			{			
				//alert(this.innerHTML);
			}			
			//打开右键盘菜单
			function openRowRightMenu()
			{ 					
				//设置被点的行的颜色
				if(enableRowRightMenu==true||enableRowRightMenu=="true")
				{
					selectColNode=null;
					selectRowNode=this;				
					initBackgroudColor();				
					for(var i=0;i<this.childNodes.length;i++)
					{
						this.childNodes[i].style.backgroundColor=rowClickBackgroudColor;	
					}
					
					//显示右键菜单层
					if(enableRowRightMenu=="true"||enableRowRightMenu==true);
					{
						var x=document.body.scrollLeft+event.clientX;   //获取当前鼠标位置的X坐标   
						var y=document.body.scrollTop+event.clientY;   //获取当前鼠标位置的Y坐标											
						if(rightMenu!=null)
						{
							rightMenu.show(x,y);	
							if(autoCloseRightMenuTime>0)
							{
								setTimeout(rightMenu.rightMenuHidde,autoCloseRightMenuTime);
							}
						}
					 }				
				 }
			}	
		/*行事件  end */		
		}
		/*列事件 begin*/
		{			
			function colMouseover()
			{										
				//如果这列是已选种的td，就不改变它的颜色
				if(enableChangColColor==true||enableChangColColor=="true")
				{
					if(this!=selectColNode)
					{					
						this.style.backgroundColor=colMouseOnBackgroundColor;						
						var indexof=getColNum(titlerow,this);
						for(var i=0;i<rowList.length;i++)
						{					
							//如果这行是已选种的td，就不改变它的颜色
							
							if(getColNum(selectRowNode,rowList[i].childNodes[indexof])<0)
							{							
								rowList[i].childNodes[indexof].style.backgroundColor=colMouseOnBackgroundColor;			
							}
						}				
					}
				}
			}
			function colMouseout()
			{			
				if(enableChangColColor==true||enableChangColColor=="true")
				{
					if(this!=selectColNode)
					{
						this.style.backgroundColor=this.style.privatebackgroundColor;	
						var indexof=getColNum(titlerow,this);
						for(var i=0;i<rowList.length;i++)
						{		
							if(getColNum(selectRowNode,rowList[i].childNodes[indexof])<0)
							{								
								rowList[i].childNodes[indexof].style.backgroundColor=rowList[i].childNodes[indexof].style.privatebackgroundColor;			
							}
						}	
					}
				}
			}
			function colClick()
			{					
				//是否允许点击，列标题，变色
				if(enableTitleClick==true||enableTitleClick=="true")
				{
					selectRowNode=null;
					var colNum=getColNum(titlerow,this);
					//是否允许按标题进行行排序
					if(enableTitleSort==true||enableTitleSort=="true")
					{					
						resetTitleHteml();
						if(selectColNode!=this)
						{
							this.sortType=1;
						}
						else
						{
							this.sortType=0-this.sortType;						
						}
						//sortTypeo为排列类型  1为升 -1为降
						if(this.sortType==1)
							this.innerHTML=this.innerHTML+sortDESCinnerHTML;
						else
							this.innerHTML=this.innerHTML+sortASCinnerHTML;							
						rowSortByCol(colNum,this);		
					}
					initBackgroudColor();
					selectColNode=this;				
					//initBackgroudColor();  //从设table所以的颜色
					if(enableChangColColor=="true")
					{
						selectColNode.style.backgroundColor=colClickBackgroudColor;
					}
					for(var i=0;i<rowList.length;i++)
					{																	
						if(enableChangColColor=="true")
						{							
							rowList[i].childNodes[colNum].style.backgroundColor=colClickBackgroudColor;			
						}
					}
				}
				
			}
			function colDbClick()
			{			
				//alert(this.innerHTML);
			}		
			function tableOnContextMenu()
			{			
				return false;
			}
		}
		/*公共函数*/
		//反回列在行的第几列。
			function getColNum(row,node)
			{				
				if(row==null||row.childNodes==null)
				{
					return -1;
				}
				for(var i=0;i<row.childNodes.length;i++)
				{					
					if(node==row.childNodes[i])
						return i;
				}
				return -1;
			}			
			//反回行在table的第几行。
			function getRowNumInTable(tableNode,row)
			{				
				for(var i=0;i<tableNode.childNodes.length;i++)
				{
					if(row==tableNode.childNodes[i])
					{
						return i;
					}
				}
				return -1;
			}			
			//从设标题的td里的内容；
			function resetTitleHteml()
			{
				for(var i=0;i<titlerow.childNodes.length;i++)
				{
					titlerow.childNodes[i].innerHTML=titleRowValues[i];
				}	
			}
			//对行进行排序 colNum：要按照哪一列进行排序， sortType:排序类型  1升，-1降
			function rowSortByCol(colNum,titleNode)
			{
				var rows=new Array();
				
				for(var i=0; i<rowList.length; i++)
				{					
					
					var temprow;			
					for(var n=1; n<rowList.length-i; n++){  		
						var ifrom = getRowNumInTable(tableNode,rowList[n-1]);	
      					var ito =   getRowNumInTable(tableNode,rowList[n]);	
						var a;
						var b;
						//如果点列标题时，这一列为整型，
						if(titleNode.dataType!=null&&titleNode.dataType.toLowerCase()=="int")
						{
							a=parseInt(rowList[n-1].childNodes[colNum].innerHTML);
							b=parseInt(rowList[n].childNodes[colNum].innerHTML);
						}
						else
						{
							a=rowList[n-1].childNodes[colNum].innerHTML;
							b=rowList[n].childNodes[colNum].innerHTML;
						}						 
						if(titleNode.sortType==1){						  		
						   	if(a  < b )		
							{						
									temprow=rowList[n-1];rowList[n-1]=rowList[n];rowList[n]=temprow;
									tableNode.moveRow(ifrom,ito); //from-to	
							}													
						}else{
							if(a  > b )	
							{
									temprow=rowList[n-1];rowList[n-1]=rowList[n];rowList[n]=temprow;
									tableNode.moveRow(ifrom,ito); 
							}															
						  }										
					 }										
				}
			}			
}	

//菜单类
function RightMenu(divid)
{
	var rowRightMenuNode=document.getElementById(divid);
	this.mouseMoveOnColor="";
		
	var menuItemList=new Array();  
	var mouseOnRow;  //
	var mouseOnTd;  //
	
	this.addMenuItem=function(menuItem)
	{				
		menuItemList.push(menuItem);
	}
	//显示右键菜单
	this.show=function(x,y)
	{
		var temp="";		
		temp+="<table>";		
		for(var i=0;i<menuItemList.length;i++)
		{
			temp+="<tr>";
			temp+=menuItemList[i].toInnerHTML();
			temp+="</tr>";
		}
		temp+="</table>";
		rowRightMenuNode.innerHTML=temp;		
		resetDivProperty();		
		if(rowRightMenuNode!=null) 
		{
			rowRightMenuNode.style.left=x;	
			rowRightMenuNode.style.top=y;						
			rowRightMenuNode.style.display="";
		}
	}	
	//隐藏右键菜单
	this.rightMenuHidde=function()
	{		
		if(rowRightMenuDIV!=null) 
		{			
			rowRightMenuNode.style.display="none";
		}
	}
	//设置右键盘菜单图层的table里的td的颜色
	function resetDivProperty()
	{
		var table=rowRightMenuNode.childNodes[0].childNodes[0];
		for(var i=0;i<table.childNodes.length;i++)
		{
			var tr=table.childNodes[i];			
			var td1=tr.childNodes[0]				
			td1.style.privatebackgroundColor=td1.style.backgroundColor;
			var td2=tr.childNodes[1];			
			td2.style.privatebackgroundColor=td2.style.backgroundColor;	
			td2.onmouseover=function()			 
			{					
				this.style.backgroundColor="#003355";
			}
			td2.onmouseout=function(td)			 
			{						
				this.style.backgroundColor=td2.style.privatebackgroundColor;
			}
		}						
	}
	
	
}
/*  菜单项目类*/
function MenuItem(imgUrl,imgBackgroundColor,menuName,menuBackgroundColor,url)
{
	this.toInnerHTML=function()
	{		
		var str="<td bgcolor="+imgBackgroundColor+"><img src='"+imgUrl+"' /></td>";
		str+="<td bgcolor="+menuBackgroundColor+"><a href='"+url+"'>"+menuName+"</a></td>";
		return str;
	}	
}